require 'minitest/autorun'
require 'spreadsheet_to_json'
require 'json'

class TestSpreadsheetToJson < MiniTest::Unit::TestCase
  def setup
    @sp = SpreadsheetToJson::Spreadsheet.new({
      access_token: SpreadsheetToJson::Config.get_access_token('./spreadsheet_access.yml'),
      spreadsheet_key: SpreadsheetToJson::Config.get_spreadsheet_key('./spreadsheet_access.yml')
    })
    @sp_to_json = SpreadsheetToJson::SheetToJson.new(@sp)
    @json_to_sp = SpreadsheetToJson::JsonToSheet.new(@sp)
  end

  def test_convert_rows_by_sheet_id
    test_json = "[{\"id\":\"1\",\"title\":\"タイトル1\",\"content\":\"『わがまま・自己中』などのイメージがある一人っ子に、見られるのが嫌で、幼稚園の間は、<br><span class=\\\"modal__strong-text\\\">ずっと弟がいるとうそをついていました。</span><br>設定も作りこんでました。２個下で、幼稚園は同じ系>列の別の園にかよっていて、<br>電車が好きな弟なの、みたいな。<br>でもなぜか、なんて名前を設定したのか、<br>いつも忘れてしまっていたので、みんなに薄々気づかれてたと思います。\",\"name\":\"山田　太郎\",\"job\":\"ディレクター\",\"url\":\"http://www.kayac.com/team/ujita-yusuke\"}]"
    assert_equal test_json, @sp_to_json.convert_rows_by_sheet_id(0, [3], 2)
  end

  def test_convert_rows_by_sheet_name
    test_json = "[{\"id\":\"1\",\"title\":\"タイトル1\",\"content\":\"『わがまま・自己中』などのイメージがある一人っ子に、見られるのが嫌で、幼稚園の間は、<br><span class=\\\"modal__strong-text\\\">ずっと弟がいるとうそをついていました。</span><br>設定も作りこんでました。２個下で、幼稚園は同じ系>列の別の園にかよっていて、<br>電車が好きな弟なの、みたいな。<br>でもなぜか、なんて名前を設定したのか、<br>いつも忘れてしまっていたので、みんなに薄々気づかれてたと思います。\",\"name\":\"山田　太郎\",\"job\":\"ディレクター\",\"url\":\"http://www.kayac.com/team/ujita-yusuke\"}]"
    assert_equal test_json, @sp_to_json.convert_rows_by_sheet_name('test', [3], 2)
  end

  # Please prepare a json file named test.json and a blank worksheet named new used for test
  def test_convert_json_to_sheet
    rows_count = JSON.parse(File.read('./test.json')).count
    @json_to_sp.convert_json_to_sheet('./test.json', 'new')
    sp_rows_after_import = @sp.get_sheet_by_name('new').num_rows - 1
    assert_equal rows_count, sp_rows_after_import
  end
end
